<?xml version="1.0" encoding="utf-8"?>
<sqlMap namespace="Other" 
xmlns="http://ibatis.apache.org/mapping" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
	
	<alias>
		<typeAlias alias="Other" type="MyBatis.DataMapper.Sqlite.Test.Domain.Other, MyBatis.DataMapper.Sqlite.Test"/>
		<typeAlias alias="A" type="MyBatis.DataMapper.Sqlite.Test.Domain.A, MyBatis.DataMapper.Sqlite.Test"/>
		<typeAlias alias="B" type="MyBatis.DataMapper.Sqlite.Test.Domain.B, MyBatis.DataMapper.Sqlite.Test"/>
		<typeAlias alias="C" type="MyBatis.DataMapper.Sqlite.Test.Domain.C, MyBatis.DataMapper.Sqlite.Test"/>
		<typeAlias alias="D" type="MyBatis.DataMapper.Sqlite.Test.Domain.D, MyBatis.DataMapper.Sqlite.Test"/>
		<typeAlias alias="E" type="MyBatis.DataMapper.Sqlite.Test.Domain.E, MyBatis.DataMapper.Sqlite.Test"/>
		<typeAlias alias="F" type="MyBatis.DataMapper.Sqlite.Test.Domain.F, MyBatis.DataMapper.Sqlite.Test"/>

	</alias>	
	
	<resultMaps>                                    
		<resultMap id="other-result"  class="Other" >
			<result property="Int"		column="Other_Int"/>
			<result property="Long"		column="Other_Long"/>
			<result property="Bool"		column="Other_Bit"/>
			<result property="Bool2"	column="Other_String" typeHandler="OuiNonBool"/>
		</resultMap>
		
		<resultMap id="A-result"  class="A" >
			<result property="Id"		column="A_ID"/>
			<result property="Libelle"	column="A_Libelle"/>
			<result property="B"		resultMapping="Other.B-result"/>
			<result property="E"		resultMapping="Other.E-result"/>
			<result property="F"		resultMapping="Other.F-result"/>
		</resultMap>
			
		<resultMap id="B-result"  class="B" >
			<result property="Id"		column="B_ID"/>
			<result property="Libelle"	column="B_Libelle"/>
			<result property="C"		resultMapping="Other.C-result"/>
			<result property="D"		resultMapping="Other.D-result"/>
		</resultMap>
				
		<resultMap id="C-result"  class="C" >
			<result property="Id"		column="C_ID"/>
			<result property="Libelle"	column="C_Libelle"/>
		</resultMap>
		
		<resultMap id="D-result"  class="D" >
			<result property="Id"		column="D_ID"/>
			<result property="Libelle"	column="D_Libelle"/>
		</resultMap>

		<resultMap id="E-result"  class="E" >
			<result property="Id"		column="E_ID"/>
			<result property="Libelle"	column="E_Libelle"/>
		</resultMap>	

		<resultMap id="F-result"  class="F" >
			<result property="Id"		column="F_ID"/>
			<result property="Libelle"	column="F_Libelle"/>
		</resultMap>			
	</resultMaps>
	
	<statements>
	
		<select id="SelectComplexJoined" resultMap="A-result">
		SELECT     
			A.Id AS A_ID,
			A.A_Libelle AS A_Libelle, 
			B.ID AS B_ID,
			B.B_Libelle AS B_Libelle,
			C.ID AS C_ID,
			C.C_Libelle AS C_Libelle,
			D.ID AS D_ID,
			D.D_Libelle AS D_Libelle,
			E.ID AS E_ID,
			E.E_Libelle AS E_Libelle,
			F.ID AS F_ID,
			F.F_Libelle AS F_Libelle 
			FROM         A 
			LEFT OUTER JOIN B ON A.B_ID = B.ID 
			LEFT OUTER JOIN C ON B.C_ID = C.ID
			LEFT OUTER JOIN D ON B.D_ID = D.ID
			LEFT OUTER JOIN E ON A.E_ID = E.ID
			LEFT OUTER JOIN F ON A.F_ID = F.ID
		</select>
		<statement id="DynamicSelectByIntLong" 
			parameterClass="Hashtable" 
			resultMap="other-result">
			select
				Other_Int,
				Other_Long,
				Other_Bit, 
				Other_String
			from Others  
			<dynamic prepend="WHERE"> 
				<isNotEqual prepend="AND" property="year" compareValue="0"> 
				Other_Int = #year#  
				</isNotEqual> 
				 
				<isNotEqual prepend="AND" property="areaid" compareValue="0"> 
				Other_Long = #areaid# 
				</isNotEqual>  
			</dynamic> 
		</statement>
				
		<statement id="DynamicSelectByBool" 
			parameterClass="Other" 
			resultMap="other-result">
			select
				Other_Int,
				Other_Long,
				Other_Bit, 
				Other_String
			from Others  
			Where Other_Bit = #Bool# 
		</statement>
		
		<statement id="InsertBool" 
			parameterClass="Other">
			Insert into Others
				( Other_Int, Other_Long, Other_Bit, Other_String )
			values
			( #Int#, #Long#, #Bool#, 'Yes')
		</statement>

		
		<statement id="SelectByInt" 
			parameterClass="int" 
			resultMap="other-result">
			select
				Other_Int,
				Other_Long,
				Other_Bit, 
				Other_String
			from Others  
			Where Other_Int = #value#
		</statement>
		
		<statement id="InsertCustomTypeHandler" 
			parameterMap="insert-params">
			Insert into Others
				( Other_Int, Other_Long, Other_Bit, Other_String  )
			values
			( ?, ?, ?, ?)
		</statement>
				
		<statement id="InsertInlineCustomTypeHandlerV1" 
			parameterClass="Other">
			Insert into Others
				( Other_Int, Other_Long, Other_Bit, Other_String  )
			values
			( #Int#, #Long#, #Bool#, #Bool2,type=bool,dbType=String#)
		</statement>
		
		<statement id="InsertInlineCustomTypeHandlerV2" 
			parameterClass="Other">
			Insert into Others
				( Other_Int, Other_Long, Other_Bit, Other_String  )
			values
			( #Int#, #Long#, #Bool#, #Bool2,handler=OuiNonBool#)
		</statement>
	</statements>

	<parameterMaps>   
		<parameterMap id="insert-params" class="Other" >
			<parameter property="Int" />
			<parameter property="Long" />
			<parameter property="Bool" />			
			<parameter property="Bool2" typeHandler="OuiNonBool"/>
		</parameterMap>
	</parameterMaps>

</sqlMap>
